In general, Transmission Control Protocol (TCP) and User Datagram Protocol (UDP) are widely used for communications over Internet Protocol (IP) networks. In TCP/IP networks, TCP operates as a connectionless protocol providing flow control, congestion control, and error recovery mechanisms for maximizing end-to-end throughput. In UDP/IP networks, UDP operates as a connectionless protocol that provides limited error recovery functions, offering instead a direct way to send and receive datagrams over an IP network. As such, UDP has a greater tolerance for packet drops than TCP.
In such networks, network bandwidth is often sold using a service level agreement that specifies a peak information rate (PIR) at which a customer may transmit information across the network. As such, if a customer agrees to pay for transmitting at a particular traffic rate, the network operator providing delivery of the traffic ensures that the customer does not exceed the PIR. In existing systems, packets of a connection are immediately dropped when the sender of the connection exceeds the established PIR for the connection. In order to enforce the PIR, the incoming traffic rate on a port associated with the connection is monitored using a policing mechanism.
The PIR policing mechanism is typically implemented as a token bucket mechanism. In a token bucket mechanism, upon forwarding a packet, the number of tokens in the bucket is increased by the number of bytes in the packet, up to a maximum token bucket size. The packets arriving at the monitored port are forwarded if the token bucket size is less than the maximum token bucket size. The packets arriving at the monitored port are forwarded if the token bucket size is greater than or equal to the maximum token bucket size.
In particular, in TCP/IP networks, as transmissions below the PIR are successful, TCP transmission window size (denoted as WND) is increased until the associated sending rate reaches the PIR. Upon reaching this strict policing limit packets begin to be dropped. The packet drops cause TCP to substantially reduce the WND (i.e., by half), thereby causing a substantial reduction in the transmission rate. Since this process typically repeats continuously, TCP connections are unable to transmit at a rate equal to the PIR. In other words, the customer is paying for connections that transmit at the agreed PIR, the network operator provides enough bandwidth to support the agreed PIR, however, due to existing TCP dynamics, the agreed PIR is never achieved.
A first proposed solution is the use of large token bucket sizes in order to admit bursts of data; however, admission of such large bursts of data into the network requires extensive, expensive buffer space to accommodate the large data bursts. Furthermore, although TCP requires accommodation of large burst sizes, UDP does not require such accommodations of large burst sizes since packet drops do not affect UDP throughput. Moreover, UDP may unnecessarily flood the network with packets using the large token buckets. A second proposed solution is the use of a traffic shaper (i.e., a leaky bucket) in order to admit bursts of data; however, extensive, expensive buffer space is needed to buffer all packets.